Class No.06  Data Structures http://ecomputernotes.com
Stack Using Linked List We can avoid the size limitation of a stack implemented with an array by using a linked list to hold the stack elements. As with array, however, we need to decide where to insert elements in the list and where to delete them so that push and pop will run the fastest. http://ecomputernotes.com
Stack Using Linked List For a singly-linked list, insert at start or end takes constant time using the head and current pointers respectively. Removing an element at the start is constant time but removal at the end required traversing the list to the node one before the last. Make sense to place stack elements at the start of the list because insert and removal are constant time. http://ecomputernotes.com
Stack Using Linked List No need for the current pointer; head is enough.  top 2 5 7 1 1 7 5 2 head http://ecomputernotes.com
Stack Operation: List int pop() { int x = head->get(); Node* p = head; head = head->getNext(); delete p; return x; } top 2 5 7 1 7 5 2 head http://ecomputernotes.com
Stack Operation: List void push(int x) { Node* newNode = new Node(); newNode->set(x); newNode->setNext(head); head = newNode; } top 2 5 7 9 7 5 2 head push(9) 9 newNode http://ecomputernotes.com
Stack Operation: List int top() { return head->get(); }  int IsEmpty() { return ( head == NULL ); } All four operations take constant time. http://ecomputernotes.com
Stack: Array or List Since both implementations support stack operations in constant time, any reason to choose one over the other? Allocating and deallocating memory for list nodes does take more time than preallocated array. List uses only as much memory as required by the nodes; array requires allocation ahead of time. List pointers (head, next) require extra memory. Array has an upper limit; List is limited by dynamic memory allocation. http://ecomputernotes.com
Use of Stack Example of use: prefix, infix, postfix expressions. Consider the expression A+B: we think of applying the  operator  “+” to the  operands  A and B. “ +” is termed a  binary operator : it takes two operands. Writing the sum as A+B is called the  infix  form of the expression.  http://ecomputernotes.com
Prefix, Infix, Postfix Two other ways of writing the expression are + A B  prefix A B +  postfix The prefixes “pre” and “post” refer to the position of the operator with respect to the two operands.  http://ecomputernotes.com
Prefix, Infix, Postfix Consider the infix expression A + B * C We “know” that multiplication is done before addition. The expression is interpreted as  A + ( B * C ) Multiplication has  precedence  over addition. http://ecomputernotes.com
Prefix, Infix, Postfix Conversion to postfix A + ( B * C ) infix form http://ecomputernotes.com
Prefix, Infix, Postfix Conversion to postfix A + ( B * C ) infix form A + ( B C * ) convert multiplication http://ecomputernotes.com
Prefix, Infix, Postfix Conversion to postfix A + ( B * C ) infix form A + ( B C * ) convert multiplication A ( B C * ) + convert addition http://ecomputernotes.com
Prefix, Infix, Postfix Conversion to postfix A + ( B * C ) infix form A + ( B C * ) convert multiplication A ( B C * ) + convert addition A B C * + postfix form http://ecomputernotes.com
Prefix, Infix, Postfix Conversion to postfix (A + B ) * C infix form http://ecomputernotes.com
Prefix, Infix, Postfix Conversion to postfix (A + B ) * C infix form ( A B + ) * C convert addition http://ecomputernotes.com
Prefix, Infix, Postfix Conversion to postfix (A + B ) * C infix form ( A B + ) * C convert addition ( A B + ) C * convert multiplication http://ecomputernotes.com
Prefix, Infix, Postfix Conversion to postfix (A + B ) * C infix form ( A B + ) * C convert addition ( A B + ) C * convert multiplication A B + C * postfix form http://ecomputernotes.com
Precedence of Operators The five binary operators are: addition, subtraction, multiplication, division and exponentiation. The order of precedence is (highest to lowest) Exponentiation  Multiplication/division *, / Addition/subtraction +, - http://ecomputernotes.com
Precedence of Operators For operators of same precedence, the left-to-right rule applies: A+B+C means (A+B)+C. For exponentiation, the right-to-left rule applies A  B  C means A  ( B  C ) http://ecomputernotes.com
Infix to Postfix Infix Postfix A + B A B + 12 + 60 – 23 12 60 + 23 – (A + B)*(C – D ) A B + C D – * A  B * C – D + E/F A B  C*D – E F/+ http://ecomputernotes.com

computer notes - Data Structures - 6

  • 1.
    Class No.06 Data Structures http://ecomputernotes.com
  • 2.
    Stack Using LinkedList We can avoid the size limitation of a stack implemented with an array by using a linked list to hold the stack elements. As with array, however, we need to decide where to insert elements in the list and where to delete them so that push and pop will run the fastest. http://ecomputernotes.com
  • 3.
    Stack Using LinkedList For a singly-linked list, insert at start or end takes constant time using the head and current pointers respectively. Removing an element at the start is constant time but removal at the end required traversing the list to the node one before the last. Make sense to place stack elements at the start of the list because insert and removal are constant time. http://ecomputernotes.com
  • 4.
    Stack Using LinkedList No need for the current pointer; head is enough. top 2 5 7 1 1 7 5 2 head http://ecomputernotes.com
  • 5.
    Stack Operation: Listint pop() { int x = head->get(); Node* p = head; head = head->getNext(); delete p; return x; } top 2 5 7 1 7 5 2 head http://ecomputernotes.com
  • 6.
    Stack Operation: Listvoid push(int x) { Node* newNode = new Node(); newNode->set(x); newNode->setNext(head); head = newNode; } top 2 5 7 9 7 5 2 head push(9) 9 newNode http://ecomputernotes.com
  • 7.
    Stack Operation: Listint top() { return head->get(); } int IsEmpty() { return ( head == NULL ); } All four operations take constant time. http://ecomputernotes.com
  • 8.
    Stack: Array orList Since both implementations support stack operations in constant time, any reason to choose one over the other? Allocating and deallocating memory for list nodes does take more time than preallocated array. List uses only as much memory as required by the nodes; array requires allocation ahead of time. List pointers (head, next) require extra memory. Array has an upper limit; List is limited by dynamic memory allocation. http://ecomputernotes.com
  • 9.
    Use of StackExample of use: prefix, infix, postfix expressions. Consider the expression A+B: we think of applying the operator “+” to the operands A and B. “ +” is termed a binary operator : it takes two operands. Writing the sum as A+B is called the infix form of the expression. http://ecomputernotes.com
  • 10.
    Prefix, Infix, PostfixTwo other ways of writing the expression are + A B prefix A B + postfix The prefixes “pre” and “post” refer to the position of the operator with respect to the two operands. http://ecomputernotes.com
  • 11.
    Prefix, Infix, PostfixConsider the infix expression A + B * C We “know” that multiplication is done before addition. The expression is interpreted as A + ( B * C ) Multiplication has precedence over addition. http://ecomputernotes.com
  • 12.
    Prefix, Infix, PostfixConversion to postfix A + ( B * C ) infix form http://ecomputernotes.com
  • 13.
    Prefix, Infix, PostfixConversion to postfix A + ( B * C ) infix form A + ( B C * ) convert multiplication http://ecomputernotes.com
  • 14.
    Prefix, Infix, PostfixConversion to postfix A + ( B * C ) infix form A + ( B C * ) convert multiplication A ( B C * ) + convert addition http://ecomputernotes.com
  • 15.
    Prefix, Infix, PostfixConversion to postfix A + ( B * C ) infix form A + ( B C * ) convert multiplication A ( B C * ) + convert addition A B C * + postfix form http://ecomputernotes.com
  • 16.
    Prefix, Infix, PostfixConversion to postfix (A + B ) * C infix form http://ecomputernotes.com
  • 17.
    Prefix, Infix, PostfixConversion to postfix (A + B ) * C infix form ( A B + ) * C convert addition http://ecomputernotes.com
  • 18.
    Prefix, Infix, PostfixConversion to postfix (A + B ) * C infix form ( A B + ) * C convert addition ( A B + ) C * convert multiplication http://ecomputernotes.com
  • 19.
    Prefix, Infix, PostfixConversion to postfix (A + B ) * C infix form ( A B + ) * C convert addition ( A B + ) C * convert multiplication A B + C * postfix form http://ecomputernotes.com
  • 20.
    Precedence of OperatorsThe five binary operators are: addition, subtraction, multiplication, division and exponentiation. The order of precedence is (highest to lowest) Exponentiation  Multiplication/division *, / Addition/subtraction +, - http://ecomputernotes.com
  • 21.
    Precedence of OperatorsFor operators of same precedence, the left-to-right rule applies: A+B+C means (A+B)+C. For exponentiation, the right-to-left rule applies A  B  C means A  ( B  C ) http://ecomputernotes.com
  • 22.
    Infix to PostfixInfix Postfix A + B A B + 12 + 60 – 23 12 60 + 23 – (A + B)*(C – D ) A B + C D – * A  B * C – D + E/F A B  C*D – E F/+ http://ecomputernotes.com

Editor's Notes

  • #3 End of lecture 5 You might believe that faster computers make it unnecessary to be concerned with efficiency. However… So we need special training.
  • #4 A primary concern for this course is efficiency. You might believe that faster computers make it unnecessary to be concerned with efficiency. However… So we need special training.
  • #5 A primary concern for this course is efficiency. You might believe that faster computers make it unnecessary to be concerned with efficiency. However… So we need special training.
  • #6 A primary concern for this course is efficiency. You might believe that faster computers make it unnecessary to be concerned with efficiency. However… So we need special training.
  • #7 A primary concern for this course is efficiency. You might believe that faster computers make it unnecessary to be concerned with efficiency. However… So we need special training.
  • #8 A primary concern for this course is efficiency. You might believe that faster computers make it unnecessary to be concerned with efficiency. However… So we need special training.
  • #9 A primary concern for this course is efficiency. You might believe that faster computers make it unnecessary to be concerned with efficiency. However… So we need special training.
  • #10 A primary concern for this course is efficiency. You might believe that faster computers make it unnecessary to be concerned with efficiency. However… So we need special training.
  • #11 A primary concern for this course is efficiency. You might believe that faster computers make it unnecessary to be concerned with efficiency. However… So we need special training.
  • #12 A primary concern for this course is efficiency. You might believe that faster computers make it unnecessary to be concerned with efficiency. However… So we need special training.
  • #13 A primary concern for this course is efficiency. You might believe that faster computers make it unnecessary to be concerned with efficiency. However… So we need special training.
  • #14 A primary concern for this course is efficiency. You might believe that faster computers make it unnecessary to be concerned with efficiency. However… So we need special training.
  • #15 A primary concern for this course is efficiency. You might believe that faster computers make it unnecessary to be concerned with efficiency. However… So we need special training.
  • #16 A primary concern for this course is efficiency. You might believe that faster computers make it unnecessary to be concerned with efficiency. However… So we need special training.
  • #17 A primary concern for this course is efficiency. You might believe that faster computers make it unnecessary to be concerned with efficiency. However… So we need special training.
  • #18 A primary concern for this course is efficiency. You might believe that faster computers make it unnecessary to be concerned with efficiency. However… So we need special training.
  • #19 A primary concern for this course is efficiency. You might believe that faster computers make it unnecessary to be concerned with efficiency. However… So we need special training.
  • #20 A primary concern for this course is efficiency. You might believe that faster computers make it unnecessary to be concerned with efficiency. However… So we need special training.
  • #21 A primary concern for this course is efficiency. You might believe that faster computers make it unnecessary to be concerned with efficiency. However… So we need special training.
  • #22 A primary concern for this course is efficiency. You might believe that faster computers make it unnecessary to be concerned with efficiency. However… So we need special training.
  • #23 End of lecture 6